package com.lzh.db.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author zhehen.lu
 * @date 2025/8/15 11:05
 */
@ConfigurationProperties(
        prefix = "mybatis-plus.auto-fill"
)
public class MybatisPlusAutoFillProperties {
    private Boolean enabled = true;
    private Boolean enableInsertFill = true;
    private Boolean enableUpdateFill = true;
    private String createTimeField = "createTime";
    private String updateTimeField = "updateTime";
    private String createUidField = "createUid";
    private String updateUidField = "updateUid";

    public MybatisPlusAutoFillProperties() {
    }

    public Boolean getEnabled() {
        return this.enabled;
    }

    public Boolean getEnableInsertFill() {
        return this.enableInsertFill;
    }

    public Boolean getEnableUpdateFill() {
        return this.enableUpdateFill;
    }

    public String getCreateTimeField() {
        return this.createTimeField;
    }

    public String getUpdateTimeField() {
        return this.updateTimeField;
    }

    public String getCreateUidField() {
        return this.createUidField;
    }

    public String getUpdateUidField() {
        return this.updateUidField;
    }

    public void setEnabled(Boolean enabled) {
        this.enabled = enabled;
    }

    public void setEnableInsertFill(Boolean enableInsertFill) {
        this.enableInsertFill = enableInsertFill;
    }

    public void setEnableUpdateFill(Boolean enableUpdateFill) {
        this.enableUpdateFill = enableUpdateFill;
    }

    public void setCreateTimeField(String createTimeField) {
        this.createTimeField = createTimeField;
    }

    public void setUpdateTimeField(String updateTimeField) {
        this.updateTimeField = updateTimeField;
    }

    public void setCreateUidField(String createUidField) {
        this.createUidField = createUidField;
    }

    public void setUpdateUidField(String updateUidField) {
        this.updateUidField = updateUidField;
    }

    @Override
    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof MybatisPlusAutoFillProperties)) {
            return false;
        } else {
            MybatisPlusAutoFillProperties other = (MybatisPlusAutoFillProperties)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                label95: {
                    Object this$enabled = this.getEnabled();
                    Object other$enabled = other.getEnabled();
                    if (this$enabled == null) {
                        if (other$enabled == null) {
                            break label95;
                        }
                    } else if (this$enabled.equals(other$enabled)) {
                        break label95;
                    }

                    return false;
                }

                Object this$enableInsertFill = this.getEnableInsertFill();
                Object other$enableInsertFill = other.getEnableInsertFill();
                if (this$enableInsertFill == null) {
                    if (other$enableInsertFill != null) {
                        return false;
                    }
                } else if (!this$enableInsertFill.equals(other$enableInsertFill)) {
                    return false;
                }

                Object this$enableUpdateFill = this.getEnableUpdateFill();
                Object other$enableUpdateFill = other.getEnableUpdateFill();
                if (this$enableUpdateFill == null) {
                    if (other$enableUpdateFill != null) {
                        return false;
                    }
                } else if (!this$enableUpdateFill.equals(other$enableUpdateFill)) {
                    return false;
                }

                label74: {
                    Object this$createTimeField = this.getCreateTimeField();
                    Object other$createTimeField = other.getCreateTimeField();
                    if (this$createTimeField == null) {
                        if (other$createTimeField == null) {
                            break label74;
                        }
                    } else if (this$createTimeField.equals(other$createTimeField)) {
                        break label74;
                    }

                    return false;
                }

                label67: {
                    Object this$updateTimeField = this.getUpdateTimeField();
                    Object other$updateTimeField = other.getUpdateTimeField();
                    if (this$updateTimeField == null) {
                        if (other$updateTimeField == null) {
                            break label67;
                        }
                    } else if (this$updateTimeField.equals(other$updateTimeField)) {
                        break label67;
                    }

                    return false;
                }

                Object this$createUidField = this.getCreateUidField();
                Object other$createUidField = other.getCreateUidField();
                if (this$createUidField == null) {
                    if (other$createUidField != null) {
                        return false;
                    }
                } else if (!this$createUidField.equals(other$createUidField)) {
                    return false;
                }

                Object this$updateUidField = this.getUpdateUidField();
                Object other$updateUidField = other.getUpdateUidField();
                if (this$updateUidField == null) {
                    if (other$updateUidField != null) {
                        return false;
                    }
                } else if (!this$updateUidField.equals(other$updateUidField)) {
                    return false;
                }

                return true;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof MybatisPlusAutoFillProperties;
    }

    @Override
    public int hashCode() {
        boolean PRIME = true;
        int result1 = 1;
        Object $enabled = this.getEnabled();
        int result = result1 * 59 + ($enabled == null ? 43 : $enabled.hashCode());
        Object $enableInsertFill = this.getEnableInsertFill();
        result = result * 59 + ($enableInsertFill == null ? 43 : $enableInsertFill.hashCode());
        Object $enableUpdateFill = this.getEnableUpdateFill();
        result = result * 59 + ($enableUpdateFill == null ? 43 : $enableUpdateFill.hashCode());
        Object $createTimeField = this.getCreateTimeField();
        result = result * 59 + ($createTimeField == null ? 43 : $createTimeField.hashCode());
        Object $updateTimeField = this.getUpdateTimeField();
        result = result * 59 + ($updateTimeField == null ? 43 : $updateTimeField.hashCode());
        Object $createUidField = this.getCreateUidField();
        result = result * 59 + ($createUidField == null ? 43 : $createUidField.hashCode());
        Object $updateUidField = this.getUpdateUidField();
        result = result * 59 + ($updateUidField == null ? 43 : $updateUidField.hashCode());
        return result;
    }

    @Override
    public String toString() {
        return "MybatisPlusAutoFillProperties(enabled=" + this.getEnabled() + ", enableInsertFill=" + this.getEnableInsertFill() + ", enableUpdateFill=" + this.getEnableUpdateFill() + ", createTimeField=" + this.getCreateTimeField() + ", updateTimeField=" + this.getUpdateTimeField() + ", createUidField=" + this.getCreateUidField() + ", updateUidField=" + this.getUpdateUidField() + ")";
    }
}
